What is the time complexity of the following code snippet?int func(int...
The function is recursively called with n/2 until n <= 0. The number of recursive calls is proportional to the logarithm of n. Hence, the time complexity is O(log n).
What is the time complexity of the following code snippet?int func(int...
Understanding the Code Snippet
The function `func(int n)` is a recursive function that performs the following:
- **Base Case**: If `n` is less than or equal to 0, it returns 0.
- **Recursive Case**: It returns `1 + func(n / 2)`, which means it calls itself with `n` divided by 2.
Analyzing the Recursion
To determine the time complexity, let's analyze how many times the function will call itself before reaching the base case:
- **Initial Call**: `func(16)`
- **Subsequent Calls**: `func(8)`, `func(4)`, `func(2)`, `func(1)`, and finally `func(0)`, which terminates the recursion.
Number of Recursive Calls
At each step, `n` is halved. Therefore, the number of times we can halve `n` until it reaches 0 is related to the logarithm of `n`:
- The sequence of calls can be expressed as: `n, n/2, n/4, ..., 1`
- The number of calls made is proportional to how many times you can divide `n` by 2, which is `log₂(n)`.
Conclusion
The time complexity of this function is:
- **O(log n)**
Thus, the correct answer is option **B**. This means that as `n` increases, the number of recursive calls increases logarithmically, making this function efficient for large values of `n`.
To make sure you are not studying endlessly, EduRev has designed Software Development study material, with Structured Courses, Videos, & Test Series. Plus get personalized analysis, doubt solving and improvement plans to achieve a great score in Software Development.